package com.fabriciojf.dbunit;


import junit.framework.TestCase;

import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.DataSetException;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.dataset.xml.FlatXmlProducer;
import org.dbunit.operation.DatabaseOperation;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.InputSource;

/**
 * Caso de teste para preparacao do banco de dados, deverá ser executado no inicio do suite para gerar os dados
 * iniciais do banco de dados  
 * 
 * @author Fabricio S Costa
 * @since 03/09/2010
 * @version 1.0
 */
public class DBUnitPrepare extends TestCase {
	
	/**
	 * Insere no banco de dados os dados iniciais a serem utilizados nos testes
	 */
    @Before
    public void setUp() throws DataSetException {

        Controller controller = new Controller();
        controller.execute();
        System.out.println("TESTE: Gerando Dados para os Teste ...");
        
    	// le o arquivo xml contendo os dados a serem inseridos
    	FlatXmlProducer producer = new FlatXmlProducer(new InputSource("src/test/resources/sample-data.xml"));
        IDataSet data = new FlatXmlDataSet(producer);

        try {
            IDatabaseConnection connection = JDBCConnection.getConnectionPrincipal();
            
            // insere os dados no banco
            DatabaseOperation.INSERT.execute(connection, data);        
        } catch (Exception exc) {
            exc.printStackTrace();
        }
    }
    
    /**
     * Informa ao console o inicio da preparacao do banco de dados. 
     * Utilizado pelo console do Husdon, não retirar esse caso de testes
     */
    @Test
    public void testDBUnitImport1() {
        System.out.println("TESTE: Preparando o Banco de Dados (DBUnit) ...");
    }
}
